#include <bits/stdc++.h>
// 2025/01/19
// tag: Recursion 
// Author: Zhang Muen
using namespace std;

int n;
bool m[1025][1025];

void f(int x, int y, int len){
    if (len == 1)
        return;
    for (int i = x; i < x + len / 2; i++)
        for (int j = y; j < y + len / 2; j++)
            m[i][j] = true;
    f(x + len / 2, y, len / 2);
    f(x, y + len / 2, len / 2);
    f(x + len / 2, y + len / 2, len / 2);
}

signed main()
{
    cin >> n;
    f(1, 1, pow(2, n));
    for (int i = 1; i <= pow(2, n); i++){
        for (int j = 1; j <= pow(2, n); j++)
            cout << !m[i][j] << " ";
        cout << endl;
    }
    return 0;
}